//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
//---------------------------------------------------------------------------
#include "uSWebHelp.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "CStrGrid"
#pragma link "CComboBx"
#pragma link "CEdit"
#pragma link "CCheckB"
#pragma link "CComboBx"
#pragma resource "*.dfm"
//---------------------------------------------------------------------------
TuGestionAdresse *uGestionAdresse;
bool bAfficheBoutonsDuBas = true;
//---------------------------------------------------------------------------
//              CONSTRUCTEUR
//---------------------------------------------------------------------------
__fastcall TuGestionAdresse::TuGestionAdresse(TComponent* Owner)
    : TForm(Owner)
{
    try {

        //Variable globales pour le logiciel WebHelp
        //------------------------------------------
        _NetAide_Logiciel = "WebHelp";
        _NetAide_Version  = "001";

        //Icone
        //-----
        bbAjouter->Glyph->LoadFromResourceName((int)HInstance, "ID_GBOUTON_NOUVEAU");
        AjouterLog->Bitmap->LoadFromResourceName((int)HInstance, "ID_GBOUTON_NOUVEAU");
        AjouterVer->Bitmap->LoadFromResourceName((int)HInstance, "ID_GBOUTON_NOUVEAU");

        bbCopier->Glyph->LoadFromResourceName((int)HInstance, "ID_GBOUTON_DUPLIQUER");
        DupliquerLog->Bitmap->LoadFromResourceName((int)HInstance, "ID_GBOUTON_DUPLIQUER");
        DupliquerVer->Bitmap->LoadFromResourceName((int)HInstance, "ID_GBOUTON_DUPLIQUER");

        bbSupprimer->Glyph->LoadFromResourceName((int)HInstance, "ID_GBOUTON_SUPPRIMER");
        SupprimerLog->Bitmap->LoadFromResourceName((int)HInstance, "ID_GBOUTON_SUPPRIMER");
        SupprimerVer->Bitmap->LoadFromResourceName((int)HInstance, "ID_GBOUTON_SUPPRIMER");

        bbModifier->Glyph->LoadFromResourceName((int)HInstance, "ID_GBOUTON_MODIFIER");

        //bbConsulter->Glyph->LoadFromResourceName((int)HInstance, "ID_ACTION_CONSULTER");
        bbSelectAll->Glyph->LoadFromResourceName((int)HInstance, "ID_ACTION_SELECT_ALL");
        bbDeSelect->Glyph->LoadFromResourceName((int)HInstance, "ID_ACTION_DESELECT");

        sbVerifier->Glyph->LoadFromResourceName((int)HInstance, "ID_VERIF_INTERNET");

        Quitter->Bitmap->LoadFromResourceName((int)HInstance, "ID_ACTION_QUITTER_24");

        m_asConditionIn = EmptyStr;
        m_nColumnToSort = 0;
        m_nLastColumn   = 0;
        m_bAscToDesc    = true;

        m_nColonneEtat = -1;

        //Filtre
        //------
        eReference->ReadOnly    = true;
        eReference->Color       = clMenu;

        eDesignation->ReadOnly  = true;
        eDesignation->Color     = clMenu;

        cbPage->Color           = clMenu;
        cbPage->Enabled         = false;

        AjouterListeLogiciel();

        if(!bAfficheBoutonsDuBas) {
            bbAjouter->Visible      = false;
            bbModifier->Visible     = false;
            bbSupprimer->Visible    = false;
            bbCopier->Visible       = false;
            bImporter->Visible      = false;
            pVerifier->Visible      = false;
        }else {
            cbLogiciel->ItemIndex = 0;
            cbVersion->Items->Add("<Toutes>");
            cbVersion->ItemIndex = 0;
            cbVersion->Enabled = false;
            Afficher(GererFiltrage());
        }

        m_bEtat = false;
        m_bEtatRienAAfficher = false;

        AccederParamCtrlF3();

    }catch( Exception &e ) {
        EIC_DISPLAY_EXCEPTION(e);}
}
//---------------------------------------------------------------------------
//                 Acces au parametrage WebHelp Ctrl+F3
//---------------------------------------------------------------------------
void __fastcall TuGestionAdresse::AccederParamCtrlF3( void )
{
    CKeyWebHelp * KeyWebHelp = NULL;
    try {

        AnsiString asRef = EmptyStr;
        AnsiString asLog = EmptyStr;
        AnsiString asVer = EmptyStr;

        bool bTrouverLog = false;
        bool bTrouverVer = false;

        KeyWebHelp = new CKeyWebHelp();
        
        //Lecture des valeurs stocké dans la base de registre
        asLog = KeyWebHelp->GetValueLog();
        asVer = KeyWebHelp->GetValueVer();
        asRef = KeyWebHelp->GetValueRef();

        if( !asRef.IsEmpty() && !asLog.IsEmpty() && !asVer.IsEmpty() ) {
            for( int i=0; i<cbLogiciel->Items->Count; i++) {
                if( cbLogiciel->Items->Strings[i] == asLog ) {
                    cbLogiciel->ItemIndex = i;
                    bTrouverLog = true;
                    break;
                }
            }

            if( bTrouverLog ) {
                AjouterListeVersion();
                for( int j=0; j<cbVersion->Items->Count; j++) {
                    if( cbVersion->Items->Strings[j] == asVer ) {
                        cbVersion->ItemIndex = j;
                        bTrouverVer = true;
                        break;
                    }
                }
                if( bTrouverVer ) {
                    cbReference->ItemIndex = 0;
                    eReference->Text = asRef;
                }else {
                    if (MessageDlg((AnsiString)"La version "+asVer+" associée au logiciel "+asLog+" n'est pas définie dans WebHelp\nVoulez-vous enregistrer la version "+asVer+" associée au logiciel "+asLog+" ?", mtConfirmation, TMsgDlgButtons() << mbYes << mbNo, 0) == mrNo)
                        Application->Terminate();
                }
            }else {
                if (MessageDlg((AnsiString)"Le logiciel "+asLog+" n'est pas définie dans WebHelp\nVoulez-vous enregistrer le logiciel "+asLog+" ?", mtConfirmation, TMsgDlgButtons() << mbYes << mbNo, 0) == mrNo)
                    Application->Terminate();
            }
        }

    }catch( Exception &e ) {
        EIC_DISPLAY_EXCEPTION(e);}
    if(KeyWebHelp) {delete KeyWebHelp; KeyWebHelp = NULL;}
}
//****************************************************************************//
//                          Affichage
//****************************************************************************//
//---------------------------------------------------------------------------
//                  Determiner la requete à afficher
//---------------------------------------------------------------------------
AnsiString __fastcall TuGestionAdresse::DeterminerRequete( const int &nLogiciel, const int &nVersion, const AnsiString &asFilter )
{
    AnsiString asRequete = "";
    try {
        AnsiString asFilterTemp = asFilter;
        if(asFilterTemp.IsEmpty())
            asFilterTemp=" ";

        if( (nLogiciel != 0) && (nVersion != 0) ) {
            ConstruireListView();
            if(bAfficheBoutonsDuBas)
                asRequete.sprintf(AFFICHAGE_LOG_VER, nLogiciel, nVersion, asFilterTemp);
            else
                asRequete.sprintf(AFFICHAGE_CONDITION, ConditionIn, nLogiciel, nVersion, asFilterTemp);
        }else {
            ConstruireListView();
            if(nLogiciel != 0)
                asRequete.sprintf(AFFICHAGE_LOG, nLogiciel, asFilterTemp);
            else
                asRequete.sprintf(AFFICHAGE_ALL, asFilterTemp);
        }
    }catch( Exception &e ) {
        EIC_DISPLAY_EXCEPTION(e);
        asRequete = "";
    }

    return asRequete;
}
//---------------------------------------------------------------------------
//         Determiner le nombre de colonne a afficher 3 ou 5 colonnes
//---------------------------------------------------------------------------
bool __fastcall TuGestionAdresse::DeterminerNbrColonne( const int &nLogiciel, const int &nVersion )
{
    bool bRetour = false;
    try {
        //3 colonnes
        if( (nLogiciel != 0) && (nVersion != 0) )
            bRetour = true;
    }catch( Exception &e ) {
        EIC_DISPLAY_EXCEPTION(e);
        bRetour = false;
    }
    return bRetour;
}
//---------------------------------------------------------------------------
//                          AFFICHER
//---------------------------------------------------------------------------
void __fastcall TuGestionAdresse::Afficher(const AnsiString &asFilter)
{

    TdmWebHelp * DataWebHelp = NULL;
    CComboAttente * Attente = NULL;
    CReference * MesReferences = NULL;
    TZZMySqlQuery * MaRequete = NULL;

    try {
        int nIdxLog = cbLogiciel->ItemIndex;
        int nIdxVer = cbVersion->ItemIndex;
        if( (nIdxLog != AUCUNE_SELECTION) && (nIdxVer != AUCUNE_SELECTION) ){
            try {
                DataWebHelp = new TdmWebHelp((TComponent*)0);
                if(!m_bEtatRienAAfficher) {
                    AnsiString asPageWeb(EmptyStr);
                    int nEtat = Etat_INCONNUE;
                    int NbreColonneEnPlus = 0;

                    int nLogiciel = (int)cbLogiciel->Items->Objects[nIdxLog];
                    int nVersion  = (int)cbVersion->Items->Objects[nIdxVer];

                    MesReferences = new CReference(nLogiciel, nVersion);

                    Attente = new CComboAttente();
                    lvReference->Items->Clear();
                    TListItem  *ListItem;

                    if(!DeterminerNbrColonne(nLogiciel,nVersion))
                        NbreColonneEnPlus = 2;

                    MaRequete = new TZZMySqlQuery( (TComponent*)0);
                    MaRequete->Database = DataWebHelp->dbWebHelp;

                    MaRequete->Sql->Text = DeterminerRequete(nLogiciel, nVersion,asFilter);

                    MaRequete->Open();
                    MaRequete->First();
                    while(!MaRequete->Eof) {
                        ListItem = lvReference->Items->Add();
                        if( (nLogiciel != 0) && (nVersion != 0) ) {
                            ListItem->SubItems->AddObject(asRequete(0), (TObject*)nRequete(1) );
                            ListItem->SubItems->Add(asRequete(2) );
                            asPageWeb = asRequete(3);
                            nEtat     = nRequete(5);
                        }else {
                            ListItem->SubItems->AddObject(asRequete(0), (TObject*)nRequete(1) );
                            ListItem->SubItems->Add(asRequete(2) );
                            ListItem->SubItems->Add(asRequete(3) );
                            ListItem->SubItems->Add(asRequete(4) );
                            asPageWeb = asRequete(5);
                            nEtat     = nRequete(7);
                        }

                        if(nRequete(4+NbreColonneEnPlus) == AUCUNE_SELECTION)
                            ListItem->SubItems->AddObject(asPageWeb,(TObject*)nRequete(4+NbreColonneEnPlus));
                        else
                            ListItem->SubItems->AddObject(  Attente->Afficher(nRequete(4+NbreColonneEnPlus)),
                                                            (TObject*)nRequete(4+NbreColonneEnPlus));

                        if(m_bEtat) {
                                if(!asPageWeb.IsEmpty()) {
                                    ListItem->SubItems->AddObject(" ", (TObject*) nEtat );
                                } else
                                    ListItem->SubItems->AddObject(" ", (TObject*) nEtat );
                        }

                        MaRequete->Next();
                    }
                    MaRequete->Sql->Clear();
                    MaRequete->Close();

                }
            }catch (Exception &e ) {
                ShowMessage("Problème de connection à la base WebHelp");}
        }
    }catch( Exception &e ) {
        EIC_DISPLAY_EXCEPTION(e);}
    if(MaRequete) {delete MaRequete; MaRequete = NULL;}
    if(MesReferences) {delete MesReferences; MesReferences = NULL;}
    if(Attente)       {delete Attente; Attente = NULL;}
    if(DataWebHelp) {delete DataWebHelp; DataWebHelp = NULL;}

}
//---------------------------------------------------------------------------
//              CONSTRUIRE LA TLISTVIEW
//---------------------------------------------------------------------------
void __fastcall TuGestionAdresse::ConstruireListView()
{
    try {
        int nIdxLog = cbLogiciel->ItemIndex;
        int nIdxVer = cbVersion->ItemIndex;
        if( (nIdxLog != AUCUNE_SELECTION) && (nIdxVer != AUCUNE_SELECTION) ) {
            int Longueur = lvReference->Width;
            Longueur -= (Longueur*0.02);

            int nLogiciel = (int)cbLogiciel->Items->Objects[nIdxLog];
            int nVersion  = (int)cbVersion->Items->Objects[nIdxVer];

            TListColumn  *NewColumn;

            m_nColonneEtat = -1;
            int nColonneEtat = -1;

            lvReference->Columns->Clear();
            if( (nLogiciel != 0) && (nVersion != 0) ) {
                NewColumn = lvReference->Columns->Add();
                NewColumn->Caption = "";
                NewColumn->Width = 0;
                nColonneEtat++;

                NewColumn = lvReference->Columns->Add();
                NewColumn->Caption  = "Référence";
                NewColumn->Width = Longueur * 0.3;
                NewColumn->ImageIndex = 0;
                nColonneEtat++;

                NewColumn = lvReference->Columns->Add();
                NewColumn->Caption  = "Désignation";
                NewColumn->Width = Longueur * 0.35;
                nColonneEtat++;

                NewColumn = lvReference->Columns->Add();
                NewColumn->Caption  = "Page Web";
                if(!m_bEtat) {
                    NewColumn->AutoSize = true;
                    NewColumn->Width = -2;
                }else
                    NewColumn->Width = Longueur * 0.30;
                nColonneEtat++;

            }else {
                NewColumn = lvReference->Columns->Add();
                NewColumn->Caption = "";
                NewColumn->Width = 0;
                nColonneEtat++;

                NewColumn = lvReference->Columns->Add();
                NewColumn->Caption  = "Logiciel";
                NewColumn->Width = Longueur * 0.13;
                NewColumn->ImageIndex = 0;
                nColonneEtat++;

                NewColumn = lvReference->Columns->Add();
                NewColumn->Caption  = "Version";
                NewColumn->Alignment = taCenter;
                NewColumn->Width = Longueur * 0.07;
                nColonneEtat++;

                NewColumn = lvReference->Columns->Add();
                NewColumn->Caption  = "Référence";
                NewColumn->Width = Longueur * 0.2;
                nColonneEtat++;

                NewColumn = lvReference->Columns->Add();
                NewColumn->Caption  = "Désignation";
                NewColumn->Width = Longueur * 0.25;
                nColonneEtat++;

                NewColumn = lvReference->Columns->Add();
                NewColumn->Caption  = "Page Web";
                if(!m_bEtat) {
                    NewColumn->AutoSize = true;
                    NewColumn->Width = -2;
                }else
                    NewColumn->Width = Longueur * 0.30;
                nColonneEtat++;
            }
            if(m_bEtat) {
                NewColumn = lvReference->Columns->Add();
                NewColumn->AutoSize = true;
                NewColumn->Caption  = "Etat";
                NewColumn->Width = -2;

                m_nColonneEtat = nColonneEtat;
            }else
                m_nColonneEtat = nColonneEtat;

            lvReference->Refresh();
        }
    }catch( Exception &e ) {
        EIC_DISPLAY_EXCEPTION(e);}
}
//---------------------------------------------------------------------------
// Mettre en rouge les références qui n'ont pas d'adresse ou une adresse non valide
//---------------------------------------------------------------------------
void __fastcall TuGestionAdresse::lvReferenceCustomDrawSubItem(
      TCustomListView *Sender, TListItem *Item, int SubItem,
      TCustomDrawState State, bool &DefaultDraw)
{
    try {
        int nCol = 0;
        if(cbLogiciel->ItemIndex != AUCUNE_SELECTION) {
            nCol = 4;
            if(cbVersion->ItemIndex != 0 && cbVersion->ItemIndex != AUCUNE_SELECTION)
                nCol = 2;
        }

        if( nCol != 0 ) {
            if( (int)Item->SubItems->Objects[nCol] != AUCUNE_SELECTION) {
                Sender->Canvas->Font->Color = clRed;
            }else {
                Sender->Canvas->Font->Color = clBlack;
            }
        }

    }catch ( Exception &e ) {
        EIC_DISPLAY_EXCEPTION(e);}
}
//****************************************************************************//
//  Outils                                                                    //
//****************************************************************************//
//---------------------------------------------------------------------------
//                INSERER L ETAT DE CHAQUE ADRESSE WEB
//---------------------------------------------------------------------------
void __fastcall TuGestionAdresse::sbVerifierClick(TObject *Sender)
{
    CVerifInternet * Internet = NULL;
    CReference * MesReferences = NULL;
    try {

        if( lvReference->Items->Count != 0 ) {
            Internet = new CVerifInternet();
            MesReferences = new CReference( (int)cbLogiciel->Items->Objects[cbLogiciel->ItemIndex],
                                            (int)cbVersion->Items->Objects[cbVersion->ItemIndex]);
            //On verifie la connexion Internet
            if(Internet->ConnexionAuSite("http://www.google.fr") ){
                pFiltreEtat->Visible = true;
                m_bEtat = true;
                CBarre MaBarre;

                MaBarre.Titre = "Vérification des adresses Web en cours.";
                if(m_bEtat) {
                    MaBarre.Messages = "Veuillez patienter svp ...";
                    MaBarre.Open();
                }
                MaBarre.Max = lvReference->Items->Count;

                for(int i=0; i<lvReference->Items->Count; i++) {
                    if(lvReference->Items->Item[i]->SubItems->Strings[m_nColonneEtat-1] != "En cours de mise à jour")
                        MaBarre.MessageInfo = lvReference->Items->Item[i]->SubItems->Strings[m_nColonneEtat-1];
                    MesReferences->VerifierEtat(lvReference->Items->Item[i]->SubItems->Strings[m_nColonneEtat-1],
                                                (int)lvReference->Items->Item[i]->SubItems->Objects[0]);
                    MaBarre++;
                }
                MaBarre.Close();
                Afficher(GererFiltrage());
            }
        }

    }catch( Exception &e ) {
        EIC_DISPLAY_EXCEPTION(e);}
    if(MesReferences) {delete MesReferences; MesReferences = NULL;}
    if(Internet) {delete Internet; Internet = NULL;}

}
//---------------------------------------------------------------------------
//              Dessiner l icone correspondant à l'état
//---------------------------------------------------------------------------
void __fastcall TuGestionAdresse::lvReferenceGetSubItemImage(
      TObject *Sender, TListItem *Item, int SubItem, int &ImageIndex)
{
    try {
        if( SubItem == m_nColonneEtat)
            ImageIndex = (int)Item->SubItems->Objects[SubItem];
    }catch( Exception &e ) {
        EIC_DISPLAY_EXCEPTION(e);}
}
//---------------------------------------------------------------------------
//          Construire la listview en fonction de la fenetre
//---------------------------------------------------------------------------
void __fastcall TuGestionAdresse::FormResize(TObject *Sender)
{
    try {
        ConstruireListView();
        if( Width == 1025)
            Panel1->Left = 249;
        else
            Panel1->Left = 357;
    }catch( Exception &e ) {
        EIC_DISPLAY_EXCEPTION(e);}
}
//---------------------------------------------------------------------------
//              EFFACEMENT DES SAISIES
//---------------------------------------------------------------------------
void __fastcall TuGestionAdresse::bRazClick(TObject *Sender)
{
    try {
        eReference->ReadOnly        = true;
        eReference->Color           = clMenu;

        eDesignation->ReadOnly      = true;
        eDesignation->Color         = clMenu;

        cbPage->Color               = clMenu;
        cbPage->Enabled             = false;

        cbPage->Text                = "";
        cbPage->ItemIndex           = AUCUNE_SELECTION;
        cbReference->ItemIndex      = AUCUNE_SELECTION;
        cbDesignation->ItemIndex    = AUCUNE_SELECTION;
        cbPageWeb->ItemIndex        = AUCUNE_SELECTION;

        cbOK->Checked       = true;
        cbNok->Checked      = true;
        cbAnomalie->Checked = true;

        eReference->Clear();
        eDesignation->Clear();

        Afficher();

    }catch( Exception &e ) {
        EIC_DISPLAY_EXCEPTION(e);}
}
//---------------------------------------------------------------------------
//              AJOUTER DES LOGICIELS
//---------------------------------------------------------------------------
void __fastcall TuGestionAdresse::AjouterListeLogiciel()
{
    CLogiciel * Logiciel = NULL;
    try{
        Logiciel = new CLogiciel(cbLogiciel->Items);
        Logiciel->AjouterListe();
        cbLogiciel->ItemIndex = 0;
    }catch( Exception &e ) {
        EIC_DISPLAY_EXCEPTION(e);}
    if(Logiciel) {delete Logiciel; Logiciel = NULL;}
}
//---------------------------------------------------------------------------
//              AJOUTER DES VERSIONS
//---------------------------------------------------------------------------
void __fastcall TuGestionAdresse::AjouterListeVersion()
{

    CVersion * Version = NULL;
    try{
        int nIdxLog = cbLogiciel->ItemIndex;
        if( nIdxLog != AUCUNE_SELECTION) {
            Version = new CVersion( cbVersion->Items,
                                    (int)cbLogiciel->Items->Objects[nIdxLog]);
            Version->AjouterListe();
            cbVersion->ItemIndex = 0;
        }
    }catch( Exception &e ) {
        EIC_DISPLAY_EXCEPTION(e);}
    if(Version) {delete Version; Version = NULL;}

}
//---------------------------------------------------------------------------
//              MODIFIER DES ADRESSES
//---------------------------------------------------------------------------
void __fastcall TuGestionAdresse::Modifier()
{
    TStringList * lRefCode = NULL;
    CReference * MesReferences = NULL;
    try {
        if(bAfficheBoutonsDuBas) {
            if(cbLogiciel->ItemIndex != 0 && cbVersion->ItemIndex != 0) {
                if(lvReference->SelCount != 0) {
                    lRefCode = new TStringList();
                    TItemStates selected = TItemStates() << isSelected;
                    TListItem  *ListItem = lvReference->Selected;

                    while(ListItem) {
                          lRefCode->Add((int)ListItem->SubItems->Objects[0]);
                          ListItem = lvReference->GetNextItem(ListItem,sdAll,selected);
                    }


                    MesReferences = new CReference( (int)cbLogiciel->Items->Objects[cbLogiciel->ItemIndex],
                                                    (int)cbVersion->Items->Objects[cbVersion->ItemIndex]);
                    MesReferences->Modifier( cbLogiciel->Items->Strings[cbLogiciel->ItemIndex],
                                             cbVersion->Items->Strings[cbVersion->ItemIndex],
                                             lRefCode,
                                             lvReference->SelCount);

                    m_bEtat = false;
                    pFiltreEtat->Visible = false;
                    Afficher(GererFiltrage());
                }else {
                    MessageDlg("Veuillez sélectionner au moins une référence.", mtInformation, TMsgDlgButtons() << mbOK, 0);
                }
            }else {
                MessageDlg("Pour modifier une adresse, il est nécessaire de sélectionner un logiciel et une version de WebHelp", mtWarning, TMsgDlgButtons() << mbOK, 0);
            }
        }

    }catch( Exception &e ) {
        EIC_DISPLAY_EXCEPTION(e);}
    if(MesReferences) {delete MesReferences; MesReferences = NULL;}
    if(lRefCode) {delete lRefCode; lRefCode = NULL;}

}
//---------------------------------------------------------------------------
//                              FILTRER
//---------------------------------------------------------------------------
AnsiString __fastcall TuGestionAdresse::GererFiltrage()
{

    AnsiString asMonFiltre = "";
    CReference * MesReferences = NULL;
    try {

        AnsiString asPageWeb(EmptyStr);
        int idxPWeb = cbPage->ItemIndex;
        if( (cbLogiciel->ItemIndex != AUCUNE_SELECTION) && (cbVersion->ItemIndex != AUCUNE_SELECTION) ) {

            if( (idxPWeb != 0) && (idxPWeb != -1) )
                asPageWeb = cbPage->Items->Strings[idxPWeb];
            else
                asPageWeb = cbPage->Text;

            idxPWeb = idxPWeb - 1;
            if( eReference->Text != "\\" && eDesignation->Text != "\\" && asPageWeb != "\\") {
                MesReferences = new CReference( (int)cbLogiciel->Items->Objects[cbLogiciel->ItemIndex],
                                                (int)cbVersion->Items->Objects[cbVersion->ItemIndex]);
                asMonFiltre = MesReferences->Filtrer(cbReference->ItemIndex,
                                                     cbDesignation->ItemIndex,
                                                     cbPageWeb->ItemIndex,
                                                     idxPWeb,
                                                     eReference->Text,
                                                     eDesignation->Text,
                                                     asPageWeb);
                asMonFiltre += FiltrerEtat();
            }
        }

    }catch( Exception &e ) {
        EIC_DISPLAY_EXCEPTION(e);
        asMonFiltre = "";}
    if(MesReferences) {delete MesReferences; MesReferences = NULL;}
    return asMonFiltre;

}
//---------------------------------------------------------------------------
//                          Filtrer les états
//---------------------------------------------------------------------------
AnsiString __fastcall TuGestionAdresse::FiltrerEtat()
{
    AnsiString asFiltre = "";
    try {

        int nFiltre = Filtre_INCONNUE;
        //On determine le filtre définie par l'utilisateur
        if( (cbOK->Checked == true) && (cbAnomalie->Checked == false) && (cbNok->Checked == false))
            nFiltre = Filtre_OK;
        else if( (cbNok->Checked == true) && (cbOK->Checked == false) && (cbAnomalie->Checked == false))
                nFiltre = Filtre_NOK;
        else if( (cbAnomalie->Checked == true) && (cbOK->Checked == false) && (cbNok->Checked == false) )
                nFiltre = Filtre_ANOMALIE;
        else if( (cbOK->Checked == true) && (cbNok->Checked == true) && (cbAnomalie->Checked == false))
                nFiltre = Filtre_OK_NOK;
        else if( (cbOK->Checked == true) && (cbAnomalie->Checked == true) && (cbNok->Checked == false) )
                nFiltre = Filtre_OK_ANOMALIE;
        else if((cbNok->Checked == true) && (cbAnomalie->Checked == true) && (cbOK->Checked == false))
            nFiltre = Filtre_NOK_ANOMALIE;
        else if((cbNok->Checked == false) && (cbAnomalie->Checked == false) && (cbOK->Checked == false))
            nFiltre = Filtre_RIEN;

        if(nFiltre != Filtre_RIEN) {
            switch(nFiltre) {
                case Filtre_OK:
                    asFiltre = " and ref_etat = 2 ";
                    break;
                case Filtre_NOK:
                    asFiltre = " and ref_etat = 3 ";
                    break;
                case Filtre_ANOMALIE:
                    asFiltre = " and ref_etat = 4 ";
                    break;
                case Filtre_OK_NOK:
                    asFiltre = " and ref_etat in (2,3) ";
                    break;
                case Filtre_OK_ANOMALIE:
                    asFiltre = " and ref_etat in (2,4) ";
                    break;
                case Filtre_NOK_ANOMALIE:
                    asFiltre = " and ref_etat in (3,4) ";
                    break;
                default:
                    break;
            }
        }else {
            lvReference->Items->Clear();
            m_bEtatRienAAfficher = true;
            asFiltre = "";
        }

    }catch( Exception &e ) {
        EIC_DISPLAY_EXCEPTION(e);
        asFiltre = "";}
    return asFiltre;
}
//---------------------------------------------------------------------------
//                  Tri par ordre alphabétique
//---------------------------------------------------------------------------
void __fastcall TuGestionAdresse::lvReferenceColumnClick(TObject *Sender,
      TListColumn *Column)
{
    try {

        m_nColumnToSort = Column->Index;
        if (m_nColumnToSort != m_nLastColumn) m_bAscToDesc = true;
        else                                  m_bAscToDesc = !m_bAscToDesc;
        ((TCustomListView *)Sender)->AlphaSort();
        m_nLastColumn = m_nColumnToSort;

        // On efface les flèches
        for( int i=0;i<(( TListView*)Sender)->Columns->Count;i++) {
            (( TListView*)Sender)->Columns->Items[i]->ImageIndex = -1;
        }
        // On affiche une flèche indiquant le tri en cours
        Column->ImageIndex = (m_bAscToDesc)?enumArrow_ASC:enumArrow_DESC;

    } catch (Exception &e) {
        EIC_DISPLAY_EXCEPTION( e);}
}
//---------------------------------------------------------------------------
//                      Compare 2 item
//---------------------------------------------------------------------------
void __fastcall TuGestionAdresse::lvReferenceCompare(TObject *Sender,
      TListItem *Item1, TListItem *Item2, int Data, int &Compare)
{
    try {

        if (m_nColumnToSort == 0) {
            Compare = CompareText(Item1->Caption, Item2->Caption );
            if (!m_bAscToDesc) Compare = -Compare;
        } else {
            int ix = m_nColumnToSort - 1;
            Compare = CompareText( Item1->SubItems->Strings[ix], Item2->SubItems->Strings[ix] );
            if (!m_bAscToDesc) Compare = -Compare;
        }

    } catch (Exception &e) {
        EIC_DISPLAY_EXCEPTION( e);}
}
//****************************************************************************//
//  Menu
//  ----
//      ->Logiciel
//      ->Version
//      ->Historique
//      ->Aide
//****************************************************************************//
//****************************************************************************//
//          --> Logiciel
//****************************************************************************//
//---------------------------------------------------------------------------
//              PARAMETRAGE DES LOGICIELS
//---------------------------------------------------------------------------
void __fastcall TuGestionAdresse::OrganiserLogClick(TObject *Sender)
{
    CLogiciel * Logiciel = NULL;
    try {
        Logiciel = new CLogiciel(cbLogiciel->Items);
        Logiciel->Parametrer();

        cbLogiciel->ItemIndex = 0;
        cbVersion->ItemIndex = 0;
        cbVersion->Enabled = false;
        
        Afficher(GererFiltrage());

    }catch( Exception &e ) {
        EIC_DISPLAY_EXCEPTION(e);}
    if(Logiciel) {delete Logiciel; Logiciel = NULL;}
}
//---------------------------------------------------------------------------
//                  MENU --> LOGICIEL --> Ajouter
//---------------------------------------------------------------------------
void __fastcall TuGestionAdresse::AjouterLogClick(TObject *Sender)
{
    TAjoutLogiciel * fAjoutLogiciel = NULL;
    try {

        fAjoutLogiciel = new TAjoutLogiciel( (TComponent*)0);
        fAjoutLogiciel->ShowModal();

        cbLogiciel->ItemIndex = 0;
        cbVersion->ItemIndex = 0;
        cbVersion->Enabled = false;
        AjouterListeLogiciel();

    } catch (Exception &e) {
        EIC_DISPLAY_EXCEPTION( e);}
    if(fAjoutLogiciel) {delete fAjoutLogiciel; fAjoutLogiciel = NULL;}
}
//---------------------------------------------------------------------------
//                  MENU --> LOGICIEL --> Dupliquer
//---------------------------------------------------------------------------
void __fastcall TuGestionAdresse::DupliquerLogClick(TObject *Sender)
{
    TCopyLogiciel * fLogiciel = NULL;
    try{

        fLogiciel = new TCopyLogiciel(  cbLogiciel->Items->Strings[cbLogiciel->ItemIndex],
                                        (int)cbLogiciel->Items->Objects[cbLogiciel->ItemIndex],
                                        true,
                                        (TComponent*)0);
        fLogiciel->ShowModal();

        cbLogiciel->ItemIndex = 0;
        cbVersion->ItemIndex = 0;
        cbVersion->Enabled = false;
        AjouterListeLogiciel();
        Afficher(GererFiltrage());

    }catch( Exception &e ) {
        EIC_DISPLAY_EXCEPTION(e);}
    if(fLogiciel) {delete fLogiciel; fLogiciel = NULL;}
}
//---------------------------------------------------------------------------
//                  MENU --> LOGICIEL --> Supprimer
//---------------------------------------------------------------------------
void __fastcall TuGestionAdresse::SupprimerLogClick(TObject *Sender)
{
    TvSSupprLogMenu * fSupprLog = NULL;
    try {

        fSupprLog = new TvSSupprLogMenu((TComponent*)0);
        fSupprLog->ShowModal();

        cbLogiciel->ItemIndex = 0;
        cbVersion->ItemIndex = 0;
        cbVersion->Enabled = false;
        AjouterListeLogiciel();

    }catch( Exception &e ) {
        EIC_DISPLAY_EXCEPTION(e);}
    if(fSupprLog) {delete fSupprLog; fSupprLog = NULL;}
}
//****************************************************************************//
//          --> Version
//****************************************************************************//
//---------------------------------------------------------------------------
//              PARAMETRAGE DES VERSIONS
//---------------------------------------------------------------------------
void __fastcall TuGestionAdresse::OrganiserVerClick(TObject *Sender)
{
    CVersion * Version = NULL;
    try {

        Version = new CVersion(cbVersion->Items, (int)cbLogiciel->Items->Objects[cbLogiciel->ItemIndex]);
        Version->Parametrer();

        AjouterListeVersion();
        cbVersion->ItemIndex = 0;
        Afficher(GererFiltrage());

    }catch( Exception &e ) {
        EIC_DISPLAY_EXCEPTION(e);}
    if(Version) {delete Version; Version = NULL;}
}
//---------------------------------------------------------------------------
//                  MENU --> VERSION --> Ajouter
//---------------------------------------------------------------------------
void __fastcall TuGestionAdresse::AjouterVerClick(TObject *Sender)
{
    TAjoutVersion * fAjoutVersion = NULL;
    try {

        fAjoutVersion = new TAjoutVersion( (TComponent*)0);
        fAjoutVersion->ShowModal();

        cbVersion->ItemIndex = 0;
        AjouterListeVersion();

    } catch (Exception &e) {
        EIC_DISPLAY_EXCEPTION( e);}
    if(fAjoutVersion) {delete fAjoutVersion; fAjoutVersion = NULL;}
}
//---------------------------------------------------------------------------
//                  MENU --> VERSION --> Dupliquer
//---------------------------------------------------------------------------
void __fastcall TuGestionAdresse::DupliquerVerClick(TObject *Sender)
{
    TCopyVersion * fCopyVersion = NULL;
    try {

        fCopyVersion = new TCopyVersion(cbLogiciel->Items->Strings[cbLogiciel->ItemIndex],
                                        (int)cbLogiciel->Items->Objects[cbLogiciel->ItemIndex],
                                        cbVersion->Items->Strings[cbVersion->ItemIndex],
                                        (int)cbVersion->Items->Objects[cbVersion->ItemIndex],
                                        true,
                                        (TComponent*)0);
        fCopyVersion->ShowModal();

        cbVersion->ItemIndex = 0;
        AjouterListeVersion();
        Afficher(GererFiltrage());

    }catch( Exception &e ) {
        EIC_DISPLAY_EXCEPTION(e);}
    if(fCopyVersion) {delete fCopyVersion; fCopyVersion = NULL;}
}
//---------------------------------------------------------------------------
//                  MENU --> VERSION --> Supprimer
//---------------------------------------------------------------------------
void __fastcall TuGestionAdresse::SupprimerVerClick(TObject *Sender)
{
    TSupprVerMenu * fSupprVerMenu = NULL;
    try {

        fSupprVerMenu = new TSupprVerMenu((TComponent*)0);
        fSupprVerMenu->ShowModal();

        cbVersion->ItemIndex = 0;
        AjouterListeVersion();

    }catch( Exception &e ) {
        EIC_DISPLAY_EXCEPTION(e);}
    if(fSupprVerMenu) {delete fSupprVerMenu; fSupprVerMenu = NULL;}
}
//****************************************************************************//
//          --> Historique
//****************************************************************************//
void __fastcall TuGestionAdresse::Historique1Click(TObject *Sender)
{
    THisto * fHistorique = NULL;
    try {
        fHistorique = new THisto((TComponent*)0);
        fHistorique->ShowModal();
    }catch( Exception &e ) {
        EIC_DISPLAY_EXCEPTION(e);}
    if(fHistorique) {delete fHistorique; fHistorique = NULL;}
}
//****************************************************************************//
//          --> Aide
//****************************************************************************//
void __fastcall TuGestionAdresse::AideWebHelp1Click(TObject *Sender)
{
    try {
        AnsiString asSiteWeb = (AnsiString)"http://"+SITE_AIDE_WEBHELP;
        ShellExecute(NULL, "Open",asSiteWeb.c_str() ,NULL, NULL, SW_SHOWMAXIMIZED);
    }catch( Exception &e ) {
        EIC_DISPLAY_EXCEPTION(e);}
}
//---------------------------------------------------------------------------
//****************************************************************************//
//  Boutons du bas
//  --------------
//      --> Tout sélectionner
//      --> Tout déselectionner
//      --> Ajouter
//      --> Modifier
//      --> Supprimer
//      --> Dupliquer
//      --> Consulter
//      --> Importer
//****************************************************************************//
//---------------------------------------------------------------------------
//                      TOUT SELECTIONNER
//---------------------------------------------------------------------------
void __fastcall TuGestionAdresse::bbSelectAllClick(TObject *Sender)
{
    try {
        for(int i=0; i<lvReference->Items->Count; i++)
            lvReference->Items->Item[i]->Selected = true;
    }catch( Exception &e ) {
        EIC_DISPLAY_EXCEPTION(e);}
}
//---------------------------------------------------------------------------
//                      TOUT DESELECTIONNER
//---------------------------------------------------------------------------
void __fastcall TuGestionAdresse::bbDeSelectClick(TObject *Sender)
{
    try {
        for(int i=0; i<lvReference->Items->Count; i++)
            lvReference->Items->Item[i]->Selected = false;
    }catch( Exception &e ) {
        EIC_DISPLAY_EXCEPTION(e);}
}
//---------------------------------------------------------------------------
//              AJOUTER DES ADRESSES
//---------------------------------------------------------------------------
void __fastcall TuGestionAdresse::bbAjouterClick(TObject *Sender)
{
    CReference * MesReferences = NULL;
    try {

        AnsiString asRef(EmptyStr);
        int idxLog = cbLogiciel->ItemIndex;
        int idxVer = cbVersion->ItemIndex;

        if( (idxLog != 0) && (idxVer != 0) && (idxVer != -1) && (idxLog != -1) ) {
            TItemStates selected = TItemStates() << isSelected;
            TListItem  *ListItem = lvReference->Selected;
            if( lvReference->SelCount != 0)
                asRef = ListItem->SubItems->Strings[0];

            MesReferences = new CReference( (int)cbLogiciel->Items->Objects[cbLogiciel->ItemIndex] ,
                                            (int)cbVersion->Items->Objects[cbVersion->ItemIndex]);
            MesReferences->Ajouter( cbLogiciel->Items->Strings[cbLogiciel->ItemIndex],
                                    cbVersion->Items->Strings[cbVersion->ItemIndex],
                                    asRef);

            m_bEtat = false;
            pFiltreEtat->Visible = false;
            Afficher(GererFiltrage());
        }else {
              MessageDlg("Pour ajouter une adresse, il est nécessaire de sélectionner un logiciel et une version de WebHelp", mtWarning, TMsgDlgButtons() << mbOK, 0);
        }

    }catch( Exception &e ) {
        EIC_DISPLAY_EXCEPTION(e);}
    if(MesReferences) {delete MesReferences; MesReferences = NULL;}
}
//---------------------------------------------------------------------------
//              MODIFIER LES ADRESSES
//---------------------------------------------------------------------------
void __fastcall TuGestionAdresse::bbModifierClick(TObject *Sender)
{
    try {
        Modifier();
    }catch( Exception &e ) {
        EIC_DISPLAY_EXCEPTION(e);}
}
//---------------------------------------------------------------------------
//                      SUPPRIMER DES ADRESSES
//---------------------------------------------------------------------------
void __fastcall TuGestionAdresse::bbSupprimerClick(TObject *Sender)
{
    CReference * MesReferences = NULL;
    try {

        AnsiString asMsg(EmptyStr);
        if(cbLogiciel->ItemIndex != 0 && cbVersion->ItemIndex != 0) {
            if(lvReference->SelCount != 0) {

                MesReferences = new CReference( (int)cbLogiciel->Items->Objects[cbLogiciel->ItemIndex],
                                                (int)cbVersion->Items->Objects[cbVersion->ItemIndex]);
                TItemStates selected = TItemStates() << isSelected;
                TListItem  *ListItem = lvReference->Selected;
                //Gestion des affichages en fonction du nombre de selection
                if(lvReference->SelCount > 1) {
                    asMsg.sprintf(SUPPR_PLUSIEURS_ADRESSES,lvReference->SelCount);
                }else {
                    asMsg = SUPPR_ADRESSE;
                }

                if (MessageDlg(asMsg, mtConfirmation, TMsgDlgButtons() << mbYes << mbNo, 0) == mrYes) {
                    //Boucle des items
                    while(ListItem) {
                        MesReferences->Suppression( cbLogiciel->Items->Strings[cbLogiciel->ItemIndex],
                                                    cbVersion->Items->Strings[cbVersion->ItemIndex],
                                                    ListItem->SubItems->Strings[0],
                                                    (int)ListItem->SubItems->Objects[0]);
                        ListItem = lvReference->GetNextItem(ListItem,sdAll,selected);
                    }
                }

                m_bEtat = false;
                pFiltreEtat->Visible = false;
                Afficher(GererFiltrage());
            }else {
                MessageDlg("Veuillez sélectionner au moins une référence.", mtInformation, TMsgDlgButtons() << mbOK, 0);
            }
        }else {
            MessageDlg("Pour supprimer une adresse, il est nécessaire de sélectionner un logiciel et une version de WebHelp", mtWarning, TMsgDlgButtons() << mbOK, 0);
        }

    }catch( Exception &e ) {
        EIC_DISPLAY_EXCEPTION(e);}
    if(MesReferences) {delete MesReferences; MesReferences = NULL;}
}
//---------------------------------------------------------------------------
//                      DUPLIQUER UNE REFERENCE
//---------------------------------------------------------------------------
void __fastcall TuGestionAdresse::bbCopierClick(TObject *Sender)
{
    CReference * MesReferences = NULL;
    CHistorique * Hist = NULL;
    try {

        if(cbLogiciel->ItemIndex != 0 && cbVersion->ItemIndex != 0) {
            TListItem  * ListItem = lvReference->Selected;
            if(lvReference->SelCount != 0) {

                MesReferences = new CReference( (int)cbLogiciel->Items->Objects[cbLogiciel->ItemIndex],
                                                (int)cbVersion->Items->Objects[cbVersion->ItemIndex]);

                Hist = new CHistorique();
                if(MesReferences->Copier((int)ListItem->SubItems->Objects[0]) )
                    Hist->AjouterOperation(Histo_DUPLI_REF,
                                            cbLogiciel->Items->Strings[cbLogiciel->ItemIndex],
                                            cbVersion->Items->Strings[cbVersion->ItemIndex],
                                            ListItem->SubItems->Strings[0]);
                m_bEtat = false;
                pFiltreEtat->Visible = false;
                Afficher(GererFiltrage());
            }else {
                MessageDlg("Veuillez sélectionner au moins une référence.", mtInformation, TMsgDlgButtons() << mbOK, 0);
            }
        }else {
            MessageDlg("Pour copier une référence, il est nécessaire de sélectionner un logiciel et une version de WebHelp", mtWarning, TMsgDlgButtons() << mbOK, 0);
        }

    }catch( Exception &e ) {
        EIC_DISPLAY_EXCEPTION(e);}
    if(Hist) {delete Hist; Hist = NULL;}
    if(MesReferences) {delete MesReferences; MesReferences = NULL;}
}
//---------------------------------------------------------------------------
//                      CONSULTER UNE PAGE WEB
//---------------------------------------------------------------------------
void __fastcall TuGestionAdresse::bbConsulterClick(TObject *Sender)
{
    CReference * MesReferences = NULL;
    try {

        if(lvReference->SelCount != 0) {
            TListItem  * ListItem = lvReference->Selected;
            if( lvReference->SelCount == 1 ) {

                MesReferences = new CReference( (int)cbLogiciel->Items->Objects[cbLogiciel->ItemIndex],
                                                (int)cbVersion->Items->Objects[cbVersion->ItemIndex]);
                MesReferences->Consulter( (int)ListItem->SubItems->Objects[0] );

            }else
                MessageDlg("Veuillez sélectionner une page Web à la fois.", mtWarning, TMsgDlgButtons() << mbOK, 0);
        }else {
            MessageDlg("Veuillez sélectionner au moins une référence.", mtInformation, TMsgDlgButtons() << mbOK, 0);
        }

    }catch( Exception &e ) {
        EIC_DISPLAY_EXCEPTION(e);}
    if(MesReferences) {delete MesReferences; MesReferences = NULL;}
}
//---------------------------------------------------------------------------
//                      IMPORTER DES REFERENCES
//---------------------------------------------------------------------------
void __fastcall TuGestionAdresse::bImporterClick(TObject *Sender)
{
    CReference * MesReferences = NULL;
    try {

        int idxLog = cbLogiciel->ItemIndex;
        int idxVer = cbVersion->ItemIndex;

        if( (idxLog != 0) && (idxVer != 0) && (idxVer != -1) && (idxLog != -1) ) {

            MesReferences = new CReference( (int)cbLogiciel->Items->Objects[cbLogiciel->ItemIndex],
                                            (int)cbVersion->Items->Objects[cbVersion->ItemIndex]);
            MesReferences->Importer();
            Afficher(GererFiltrage());
        }else {
            MessageDlg("Pour importer une référence, il est nécessaire de sélectionner un logiciel et une version de WebHelp", mtWarning, TMsgDlgButtons() << mbOK, 0);
        }

    }catch( Exception &e ) {
        EIC_DISPLAY_EXCEPTION(e);}
    if(MesReferences) {delete MesReferences; MesReferences = NULL;}
}
//****************************************************************************//
//          Gestion des évènements
//****************************************************************************//
//---------------------------------------------------------------------------
//           AFFICHAGE DES VERSIONS D AIDES EN FONCTION DU LOGICIEL
//---------------------------------------------------------------------------
void __fastcall TuGestionAdresse::cbLogicielChange(TObject *Sender)
{
    CVersion * Version = NULL;
    try {

        int nIdxLog = cbLogiciel->ItemIndex;
        if( nIdxLog != AUCUNE_SELECTION ) {
            if(cbLogiciel->ItemIndex != 0 )
                cbVersion->Enabled = true;
            else
                cbVersion->Enabled = false;
                
            Version = new CVersion( cbVersion->Items,
                                    (int)cbLogiciel->Items->Objects[nIdxLog]);
            Version->AjouterListe();

            cbVersion->ItemIndex = 0;
            pFiltreEtat->Visible = false;
            m_bEtat = false;
            Afficher(GererFiltrage());
        }
    }catch( Exception &e ) {
        EIC_DISPLAY_EXCEPTION(e);}
    if(Version) {delete Version, Version = NULL;}
}
//---------------------------------------------------------------------------
//      AFFICHAGE DES REFERENCES EN FONCTION DU LOGICIEL ET DE LA VERSION
//---------------------------------------------------------------------------
void __fastcall TuGestionAdresse::cbVersionChange(TObject *Sender)
{
    try {

        if( cbVersion->ItemIndex != AUCUNE_SELECTION ){
            Afficher(GererFiltrage());
            pFiltreEtat->Visible = false;
            m_bEtat = false;
        }

    }catch( Exception &e ) {
        EIC_DISPLAY_EXCEPTION(e);}
}
//---------------------------------------------------------------------------
//                      FILTRER REFERENCE
//---------------------------------------------------------------------------
void __fastcall TuGestionAdresse::eReferenceChange(TObject *Sender)
{
    try {
         Afficher(GererFiltrage());
    }catch( Exception &e ) {
        EIC_DISPLAY_EXCEPTION(e);}
}
//---------------------------------------------------------------------------
//                      FILTRER DESIGNATION
//---------------------------------------------------------------------------
void __fastcall TuGestionAdresse::eDesignationChange(TObject *Sender)
{
    try {
        Afficher(GererFiltrage());
    }catch( Exception &e ) {
        EIC_DISPLAY_EXCEPTION(e);}
}
//---------------------------------------------------------------------------
//                      FILTRER PAGE WEB
//---------------------------------------------------------------------------
void __fastcall TuGestionAdresse::cbPageExit(TObject *Sender)
{
    try {
        if(!cbPage->Text.IsEmpty()) {
            Afficher(GererFiltrage());
            if(m_bEtatRienAAfficher) m_bEtatRienAAfficher = false;
        }

    }catch( Exception &e ) {
        EIC_DISPLAY_EXCEPTION(e);}
}
//---------------------------------------------------------------------------
//                  Filtrer les adresses OK
//---------------------------------------------------------------------------
void __fastcall TuGestionAdresse::cbOKClick(TObject *Sender)
{
    try {

        Afficher(GererFiltrage());
        if(m_bEtatRienAAfficher) m_bEtatRienAAfficher = false;

    }catch( Exception &e ) {
        EIC_DISPLAY_EXCEPTION(e);}
}
//---------------------------------------------------------------------------
//                   Filtrer les adresses NOK
//---------------------------------------------------------------------------
void __fastcall TuGestionAdresse::cbNokClick(TObject *Sender)
{
    try {

        Afficher(GererFiltrage());
        if(m_bEtatRienAAfficher) m_bEtatRienAAfficher = false;

    }catch( Exception &e ) {
        EIC_DISPLAY_EXCEPTION(e);}
}
//---------------------------------------------------------------------------
//                    Filtrer les adresses avec anomalies
//---------------------------------------------------------------------------
void __fastcall TuGestionAdresse::cbAnomalieClick(TObject *Sender)
{
    try {

        Afficher(GererFiltrage());
        if(m_bEtatRienAAfficher) m_bEtatRienAAfficher = false;

    }catch( Exception &e ) {
        EIC_DISPLAY_EXCEPTION(e);}
}
//---------------------------------------------------------------------------
//                      EVENEMENT COMBO REF FILTRE
//---------------------------------------------------------------------------
void __fastcall TuGestionAdresse::cbReferenceChange(TObject *Sender)
{
    try {
        eReference->ReadOnly = false;
        eReference->Color    = clWindow;
    }catch( Exception &e ) {
        EIC_DISPLAY_EXCEPTION(e);}
}
//---------------------------------------------------------------------------
//                      EVENEMENT COMBO DEDIGNATION FILTRE
//---------------------------------------------------------------------------
void __fastcall TuGestionAdresse::cbDesignationChange(TObject *Sender)
{
    try {
        eDesignation->ReadOnly = false;
        eDesignation->Color    = clWindow;
    }catch( Exception &e ) {
        EIC_DISPLAY_EXCEPTION(e);}
}
//---------------------------------------------------------------------------
//                      EVENEMENT COMBO PAGE WEB FILTRE
//---------------------------------------------------------------------------
void __fastcall TuGestionAdresse::cbPageChange(TObject *Sender)
{
    try {
        if(cbPage->ItemIndex != 0 && cbPage->ItemIndex != -1)
            cbPage->Style = csDropDownList;
        else
            cbPage->Style = csDropDown;
    }catch( Exception &e ) {
        EIC_DISPLAY_EXCEPTION(e);}
}
//---------------------------------------------------------------------------
void __fastcall TuGestionAdresse::cbPageWebChange(TObject *Sender)
{

    CReference * MesReferences = NULL;
    try {
        int nIdxLog = cbLogiciel->ItemIndex;
        int nIdxVer = cbVersion->ItemIndex;
        if( (nIdxLog != AUCUNE_SELECTION) && (nIdxVer != AUCUNE_SELECTION) ) {
            cbPage->Enabled         = true;
            cbPage->Color           = clWindow;

            int nLogiciel = (int)cbLogiciel->Items->Objects[nIdxLog];
            int nVersion  = (int)cbVersion->Items->Objects[nIdxVer];

            MesReferences = new CReference(nLogiciel, nVersion);
            int idx = cbPage->ItemIndex;
            MesReferences->RemplirListeWeb(cbPage->Items);
            cbPage->ItemIndex = idx;
        }
    }catch( Exception &e ) {
        EIC_DISPLAY_EXCEPTION(e);}
    if(MesReferences) {delete MesReferences; MesReferences = NULL;}

}
//---------------------------------------------------------------------------
//              Modifier une référence en cliquant dessus
//---------------------------------------------------------------------------
void __fastcall TuGestionAdresse::lvReferenceDblClick(TObject *Sender)
{
    try {
        Modifier();
    }catch( Exception &e ) {
    EIC_DISPLAY_EXCEPTION(e);}
}
//****************************************************************************//
//---------------------------------------------------------------------------
//                      QUITTER LE PROGRAMME
//---------------------------------------------------------------------------
void __fastcall TuGestionAdresse::QuitterClick(TObject *Sender)
{
    try {
        Close();
    }catch( Exception &e ) {
        EIC_DISPLAY_EXCEPTION(e);}
} 
//****************************************************************************//
